import request from '@/utils/request';

/**
 * 获取数据清洗任务列表
 */
export function getDataCleanTasks() {
  return request({
    url: '/api/data-clean/tasks',
    method: 'get'
  });
}

/**
 * 创建数据清洗任务
 * @param {FormData} formData 包含name和file的表单数据
 */
export function createDataCleanTask(formData) {
  return request({
    url: '/api/data-clean/tasks',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    transformRequest: [function (data) {
      return data;
    }]
  });
}

/**
 * 获取数据清洗任务详情
 * @param {number} id 任务ID
 */
export function getDataCleanTaskDetail(id) {
  return request({
    url: `/api/data-clean/tasks/${id}`,
    method: 'get'
  });
}

/**
 * 删除数据清洗任务
 * @param {number} id 任务ID
 */
export function deleteDataCleanTask(id) {
  return request({
    url: `/api/data-clean/tasks/${id}`,
    method: 'delete'
  });
}

/**
 * 清洗数据
 * @param {number} id 任务ID
 */
export function cleanDataTask(id) {
  return request({
    url: `/api/data-clean/tasks/${id}/clean`,
    method: 'post'
  });
}

/**
 * 下载文件
 * @param {string} filePath 文件路径
 */
export function downloadFile(filePath) {
  return request({
    url: '/api/data-clean/download',
    method: 'get',
    params: { file_path: filePath },
    responseType: 'blob'
  });
}

/**
 * 下载任务结果文件
 * @param {number} id 任务ID 
 */
export function downloadTaskResult(id) {
  return request({
    url: `/api/data-clean/tasks/${id}/download`,
    method: 'get',
    responseType: 'blob',
    responseHeaders: true
  });
}

/**
 * 获取任务统计信息
 * @param {number} id 任务ID
 */
export function getTaskStats(id) {
  return request({
    url: `/api/data-clean/tasks/${id}/stats`,
    method: 'get'
  });
}

/**
 * 获取任务结果文件预览
 * @param {number} id 任务ID
 * @param {string} sheetName 工作表名称（可选）
 */
export function getResultPreview(id, sheetName = null) {
  const params = sheetName ? { sheet_name: sheetName } : {};
  return request({
    url: `/api/data-clean/tasks/${id}/result-preview`,
    method: 'get',
    params
  });
}

/**
 * 获取任务结果统计信息
 * @param {number} id 任务ID
 */
export function getResultStats(id) {
  return request({
    url: `/api/data-clean/tasks/${id}/result-stats`,
    method: 'get'
  });
}

/**
 * 提取品牌
 * @param {Object} data - 产品数据，支持多种格式
 * @returns {Promise<Object>} API响应
 */
export function extractBrands(data) {
  console.log('===DEBUG=== dataClean.js - extractBrands函数调用');
  console.log('===DEBUG=== 请求数据类型:', typeof data);
  
  // 检查数据是FormData还是普通对象
  if (data instanceof FormData) {
    console.log('===DEBUG=== 使用FormData格式请求');
    
    // 记录FormData中的键
    for (const key of data.keys()) {
      console.log('===DEBUG=== FormData键:', key);
      if (key === 'product_names') {
        console.log('===DEBUG=== product_names值类型:', typeof data.get('product_names'));
        console.log('===DEBUG=== product_names值:', data.get('product_names').substring(0, 100) + '...');
      }
    }
    
    return request({
      url: '/api/data-clean/extract-brands',
      method: 'post',
      data: data
    });
  } 
  
  console.log('===DEBUG=== 使用JSON格式请求');
  
  // 使用统一的格式处理产品数据
  let requestData = data;
  
  // 如果数据包含product_names字段就使用，否则尝试其他可能的格式
  if (!requestData.product_names) {
    // 处理products数组格式
    if (requestData.products && Array.isArray(requestData.products)) {
      if (typeof requestData.products[0] === 'string') {
        requestData = {
          product_names: requestData.products
        };
      } else if (requestData.products[0] && (requestData.products[0].product_name || requestData.products[0].name)) {
        requestData = {
          product_names: requestData.products.map(p => p.product_name || p.name).filter(Boolean)
        };
      }
    } else if (requestData.names && Array.isArray(requestData.names)) {
      requestData = {
        product_names: requestData.names
      };
    }
  }
  
  console.log('===DEBUG=== 标准化后的请求体:', JSON.stringify(requestData).substring(0, 200) + '...');
  
  return request({
    url: '/api/data-clean/extract-brands',
    method: 'post',
    data: requestData,
    headers: {
      'Content-Type': 'application/json'
    }
  });
}

/**
 * 保存新品牌到数据库
 * @param {FormData} formData 包含品牌列表和类别的表单数据
 */
export function saveNewBrands(formData) {
  return request({
    url: '/api/data-clean/save-new-brands',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    // 不对FormData进行任何处理，保持原始状态
    transformRequest: [function (data) {
      return data;
    }]
  });
}

/**
 * 获取所有品牌列表
 * @param {Object} params 查询参数
 */
export function getAllBrands(params = {}) {
  return request({
    url: '/api/data-clean/brands',
    method: 'get',
    params
  });
}

/**
 * 保存非品牌词到数据库
 * @param {FormData} formData 包含非品牌词列表和类别的表单数据
 */
export function saveNonBrandWords(formData) {
  return request({
    url: '/api/data-clean/save-non-brand-words',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    // 不对FormData进行任何处理，保持原始状态
    transformRequest: [function (data) {
      return data;
    }]
  });
} 